package com.cman777.springc.ratelimiter.rule;

import com.cman777.springc.ratelimiter.alg.AlgEnum;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;

/**
 * @author chenzhicong
 * @time 2020/9/18 10:29
 */
@Getter
@Setter
@EqualsAndHashCode
@ToString
public class RateRule {
    /**
      * rule唯一标识
      */
    private String id;
     /**
     * 时间窗口限制次数
     */
    private Long limitTimes;
    /**
     * 时间窗口周期 单位秒
     */
    private Long unit;

    /**
     * 限流算法
     */
    private AlgEnum alg;

    /**
      * 维度
      */
    private Dimension dimension;

    /**
      * 维度下具体的个体（如果针对该维度所有的个体都需要限流则为空）
      * 分隔符使用&next 通配符使用* 顺序与dimension中的属性对应
      */
    private String val;

    /** 同一维度，如果收集属性满足val的规则有多个，取哪个规则的优先级(越低越优先) */
    private Integer orderNum;
    
    /**
      * 修改时间
      */
    private Date updateTime;




}
